package com.spring.boot.test.utils;

import java.nio.charset.StandardCharsets;

/**
 * @Desc: 字符串工具类
 */
public class StrUtils {
    /**
     * 取字符串后2位
     */
    public static String tail2(String s) {
        return tail(s,"00",2);
    }

    /**
     * 取字符串后3位
     */
    public static String tail3(String s) {
        return tail(s,"000",3);
    }

    /**
     * 截取拼接后的字符串的最后N位
     * @param s 原始字符串
     * @param prefix 拼接的前缀
     * @param substrLength 要截取的字符串长度
     */
    private static String tail(String s,String prefix,int substrLength){
        s = prefix + s;
        StringBuilder str = new StringBuilder();
        for (int i = s.length() - 1; i >= 0; i--) {
            char c = s.charAt(i);
            if (Character.isDigit(c)) {
                str.insert(0, c);
            }
            if (str.length() == substrLength) {
                break;
            }
        }
        return str.toString();
    }



    /**
     * 根据编码类型获得签名内容byte[]
     */
    public static byte[] getContentBytesByUTF8(String content) {
        return content.getBytes(StandardCharsets.UTF_8);
    }

    /**
     * 取模后的绝对值
     *
     * @param value      传入的值
     * @param modCount   取模的数量
     */
    public static String getAbsModuloValue(int value, int modCount) {
        return String.valueOf(Math.abs(value % modCount));
    }

    /**
     * 取模后的值
     *
     * @param value      传入的值
     * @param modCount   取模的数量
     */
    public static String getModuloValue(long value, int modCount) {
        return String.valueOf(value % modCount);
    }

}
